package Controleurs;

import partage.DonneesConnexion;
import client.IdMessage;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.os.Message;
import android.projet.morpion.AndroidActivity;
import android.view.Menu;
import android.widget.Toast;

public abstract class Controleur {
	protected int idVue = -1;
	protected Controleur suivant = null;
	protected Controleur precedant = null;
	protected AndroidActivity activity = null;
	private DonneesConnexion donneesConnexion;
	
	public Activity getActivity() {
		return activity;
	}

	public void setActivity(AndroidActivity activity) {
		this.activity = activity;
	}

	public Controleur(AndroidActivity activity ,int idVue, Controleur suivant) {
		this.idVue = idVue;
		this.suivant = suivant;
		this.activity = activity;
	}

	public int getIdVue() {
		return idVue;
	}

	public void setIdVue(int idVue) {
		this.idVue = idVue;
	}

	public Controleur getSuivant() {
		return suivant;
	}

	public void setSuivant(Controleur suivant) {
		this.suivant = suivant;
	}

	public Controleur getPrecedant() {
		return precedant;
	}

	public void setPrecedant(Controleur precedant) {
		this.precedant = precedant;
	}
	
	public  void setDialog(String msg)
	{
		AlertDialog.Builder builder = new AlertDialog.Builder(activity);
		builder.setMessage(msg)
		       .setCancelable(false)
		       .setPositiveButton("OK",null);
		builder.create().show();
	}
	public void setAttente(String msg)
	{
		ProgressDialog dialog = ProgressDialog.show(this.activity, "", 
				msg, true);
		dialog.show();
	}
	public void setInfo(String msg,int dureeAffichage)
	{
		Toast.makeText(activity,msg, dureeAffichage).show();
	}
	public DonneesConnexion getDonneesConnexion() {
		return donneesConnexion;
	}

	public void setDonneesConnexion(DonneesConnexion donneesConnexion) {
		this.donneesConnexion = donneesConnexion;
	}

	public void demarrer(Controleur controleur)
	{
		precedant = controleur;
		if(precedant!=null)
			donneesConnexion = precedant.donneesConnexion;
		initVue();
	}
	
	public void demarrer()
	{
		initVue();
	}
	
	protected void initVue()
	{
		activity.setContentView(idVue);
	}
	
	public  void envMessage(Object message,IdMessage idMessage)
	{
		Message message2 = activity.getHandler().obtainMessage(idMessage.ordinal(), message);
		activity.getHandler().sendMessage(message2);
	}
	
	public void envImmediatMsg(Object message,IdMessage idMessage)
	{
		Message message2 = activity.getHandler().obtainMessage(idMessage.ordinal(), message);
		activity.getHandler().sendMessageAtFrontOfQueue(message2);
	}
	
	public abstract void touchRetourAction();
	
	public abstract void touchMenuAcion(Menu menu);
	
	public  void recMessage(Message msg)
	{
		if(msg.what==IdMessage.StringDialog.ordinal())
			setDialog((String)msg.obj);
		if(msg.what==IdMessage.StringInfo.ordinal())
			setInfo((String)msg.obj,5);
	}
	

}
